Computer graphics finds uses in many applications, including business, science, animation, simulation, computer-aided design, process control, electronic publication, gaming, and medical diagnosis. To display a realistic representation of a scene comprising multiple arbitrary shapes, a computer graphics system uses a rendering pipeline, as shown in FIG. 2A. The system models the arbitrary shapes, usually in the application stage 210 or the geometry stage 220, by combining multiple polygons. The rasterizer stage 230 takes polygon and space coordinate data and translates it to a view of the scene, in a format suitable for the physical display system 240. Increasing the realism of displayed views is an essential mission of computer graphics.
A serious challenge to rendering realistic views arises from attempting to display mathematically smooth curves or textures on a physical display comprising a plurality of picture elements, known as “pixels.” Within a computer program, a polygon represented by a series of mathematical functions effectively has infinite resolution subject only to the limitation of mathematics while even the highest resolution physical display systems have finite resolution. The display must represent every polygon in the view by selecting a color value and other characteristics for each pixel. Since a pixel can only be rendered with one color at a time, when the pixel is on a boundary between polygons of differing colors, a jagged color transition can occur if the system does not carefully choose the color of the pixel. This effect, known as aliasing, is most commonly seen when a system chooses pixel color based on a single sample point within the area of the view covered by the pixel. Aliasing artifacts can also occur within textures as they are applied over polygons. Of course, as the resolution of a display increases, the visibility of aliasing artifacts can decrease.
In an effort to minimize aliasing, a variety of techniques that essentially create the illusion that the display has higher resolution than it physically does have been developed. These anti-aliasing techniques include those that primarily correct aliasing of polygon edges, e.g. A-buffer, fragment-based techniques, and other shared storage techniques, and those that correct aliasing of textures, e.g. mipmapping, ripmapping, summed area table and other filtering techniques.
Though aliasing, essentially being limited to edges of polygons and abrupt color transitions within textures, occurs only over a very small area of the screen, in a dynamic image this area is in constant flux. Because tracking the regions that need anti-aliasing is often more difficult, and expensive, than performing anti-aliasing over the entire view, many graphics technologies currently process the entire view to make the edges appear smoother. These techniques are known as full-scene anti-aliasing (FSAA).
One variety of FSAA prescribes sampling object characteristics at multiple points dispersed throughout the theoretical pixel. Each of the characteristics is then given a final value, a function of the multiple values sampled at each point, which is rendered for display. This technique is known as multisample anti-aliasing (MSAA), often preceded by a multiplier indicating the number of samples used per pixel, e.g. 4× MSAA for multi-sampling using four samples per pixel.
Another variety of FSAA prescribes rendering the entirety of the view at a higher resolution, usually having a number of virtual pixels that is a multiple of the actual number of pixels in the display so that each physical pixel has a natural number of corresponding virtual pixels. Each characteristic of a physical pixel is a function of the corresponding characteristics of the corresponding virtual pixels. This technique is known as supersampling, often preceded by a multiplier indicating the number of virtual pixels rendered for every physical pixel, e.g. 4× supersampling for a virtual view rendered at four times the resolution. Because rendering a pixel requires more resources than simply sampling it, supersampling is more computationally demanding than MSAA.
These FSAA techniques are generally effective, but computationally intensive, and can only be implemented at high quality levels beyond 4× by very high end systems. Other techniques have attempted to achieve a net gain by substituting some full-scene computations with computations for determining which pixels are partially covered and require anti-aliasing, and to use higher quality anti-aliasing on those pixels. In one scheme, the pixels that are partially covered by one or more polygons are identified and then stored in a separate buffer. The characteristics of the various polygons competing for these pixels are filtered to arrive at a final value for the pixels. This has been termed “fragment” anti-aliasing (FAA), but this use of “fragment” denotes a partially covered pixel, a sense that differs from that used in the rest of this application, and in the art in general.
Further, because traditional FSAA fails to correct some anti-aliasing within textures, a texture filtering technique is usually applied to a view to reduce aliasing within textures applied to the polygons that compose the view. These techniques also act to reduce the blurring associated with magnification and minification of textures during application to a polygon.
However, at least one technique attempts to increase the effect of anti-aliasing on textures. In this scheme, anti-aliasing is applied to textures that are mapped onto the surface of a polygon and that have some level of transparency, a characteristic specified in a portion of the texture called the alpha channel. Textures with transparency are anti-aliased, using a scheme similar to either supersampling or MSAA. This is known as transparency adaptive anti-aliasing (TAAA). While TAAA has no efficiency advantages over traditional FSAA, is does permit increased realism in texture rendering.
However, all known anti-aliasing techniques, including texture filtering techniques, fail to provide efficient, high-quality anti-aliasing of the visually or programmatically important elements of a scene, without spending additional computing power to enhance unimportant or less important elements.